Skip to content

Conversation

@s-heppner
Copy link
Contributor

@s-heppner s-heppner commented Jan 20, 2025

Warning

These changes are not backward compatible and therefore require a 2.0.0 release!

Previously, we tried to use the Backend concept for both data persistence and data integration.
This led to complicated cross-dependencies, architectures and badly maintainable code.

Now, we decided to split these two concepts and use the existing Backend ObjectStores for just the data persistence.

Concretely, this PR does the following:

  1. Remove the abstract Backend class (backends.py), as well as their concrete implementations (CouchDBBackend, LocalFileBackend), as they are no longer needed
  2. Remove the Referable.source attribute, as it was only needed for the Backend class
  3. Remove methods related to the Referable.source attribute, such as Referable.update() and Referable.commit() (base.py), as they were used together to perform the data integration.
  4. Adapt other related codes such as tutorials and tests to reflect these changes
  5. Adapt documentation to reflect these changes

@s-heppner s-heppner added enhancement Enhancement of an existing feature sdk Something to do with the `sdk` package labels Jan 20, 2025
@s-heppner s-heppner changed the title Improve/data persistence Refactor Backend concept for data persistence Jan 20, 2025
@s-heppner
Copy link
Contributor Author

For reference: Some of the discussions of this PR are at rwth-iat/basyx-python-sdk#58 as well.

@shenchenruwo
Copy link

Looks good to me

@s-heppner
Copy link
Contributor Author

Is this now ready to be merged? @zrgt could you maybe review it?

@s-heppner s-heppner merged commit 553d87a into eclipse-basyx:develop Sep 15, 2025
15 checks passed
@s-heppner s-heppner deleted the improve/data_persistence branch September 15, 2025 10:45
@s-heppner s-heppner mentioned this pull request Oct 27, 2025
zrgt pushed a commit to rwth-iat/basyx-python-sdk that referenced this pull request Nov 18, 2025
Previously, we tried to use the `Backend` concept for both data persistence and data integration. 
This led to complicated cross-dependencies, architectures and badly maintainable code. 

Now, we decided to split these two concepts and use the existing `Backend` `ObjectStore`s for just the data persistence.

Concretely, this commit does the following:

1. Remove the abstract `Backend` class (backends.py), as well as their concrete implementations (`CouchDBBackend`, `LocalFileBackend`), as they are no longer needed
2. Remove the `Referable.source` attribute, as it was only needed for the `Backend` class
3. Remove methods related to the `Referable.source` attribute, such as `Referable.update()` and `Referable.commit()` (base.py), as they were used together to perform the data integration.
4. Adapt other related codes such as tutorials and tests to reflect these changes
5. Adapt documentation to reflect these changes
s-heppner added a commit that referenced this pull request Dec 5, 2025
Prepare Release v2.0.0

# Release Notes

Version 2.0.0 of the BaSyx-Python SDK comes with a major refactoring of the server and a renewed concept for data persistence.

Previously, the server code was split between the `sdk` and `server` packages (due to historic development of the code). 
Now all the code relevant just for the server is located in `server`, where it belongs. Since this means, some code that was previously in `sdk` is not there anymore, this is a breaking change and warranted the new major release.

> [!note]
> This release does not have any changes in implemented AAS specification versions. It is the preparotory release in order to get ready for the new versions of the specifications, as well as new features for the SDK, such as Registry and Discovery server.

> [!warning]
> Due to these major refactorings, there were some backward incompatible changes. Please check the documentation, if you encounter any issues.

# Changelog

**Notable:**
- Backward Incompatible: Refactor server functionality from `sdk` to `server` (See: #388)
- Backward Incompatible: Refactor `backend` concept for data persistence (See: #370)
- Backward Incompatible: Refactor server `start-up` options (See: #418)
- Remove support for Python 3.9 (as it is EoL) (See #433)

**Improvements:**
- Clarify documentation of running the server with Docker (See: #398)
- Document running the server without Docker (See: #403)
- Improve XML serialization (See: #406)
- Improve server reading of JSON and XML files (See: #408)
- Add more utility methods for `Referable` and `Key` handling (See: #410)

**Bugfixes:**
- Fix type issues found with a new version of `mypy` (See: #399)
- Fix parsing of `ConceptDescription`s in the server (See: #420)
- Update `pyecma376-2` and `lxml` dependencies (See: #419)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Enhancement of an existing feature sdk Something to do with the `sdk` package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants